/**
 *
 * @param  {Array} userRouter 后台返回的用户权限json
 * @param  {Array} allRouter  前端配置好的所有动态路由的集合
 * @return {Array} realRoutes 过滤后的路由
 */
import JoinListHandle from "wangeditor/dist/menus/list/ListHandle/JoinListHandle";

export function recursionRouter(userRouter:any[] = [], allRouter:any = []) {
    // console.log(userRouter,allRouter,1)
    var realRoutes:any[] = []
    allRouter.forEach((v:any, i:number) => {
        userRouter.forEach((item:any, index:number) => {
            //根据type进行对比
            if (item.type === v.type) {
                if (item.children && item.children.length > 0) {
                    v.children = recursionRouter(item.children, v.children)
                }
                realRoutes.push(v)
            }
        })
    })
    // console.log(realRoutes,2)
    return realRoutes
}

/**
 *
 * @param {Array} routes 用户过滤后的路由
 *
 * 递归为所有有子路由的路由设置第一个children.path为默认路由
 */
export function setDefaultRoute(routes:any[]) {
    routes.forEach((v:any, i:number) => {
        if (v.children && v.children.length > 0) {
            v.redirect = { name: v.children[0].name }
            setDefaultRoute(v.children)
        }
    })
}
export function buildTreeRoutes(routes:any[],fiexArr:any[]) {
    // let arr:any[]=[]
    let arr=JSON.parse(JSON.stringify(routes))
    let newarr:any[]=[]
    // if(newarr.length){
        newarr.forEach((m)=>{
                m.children=[]
                arr.forEach((n:any)=>{
                    if(m.menu_id==n.parent_id) {
                        m.children.push(n)
                    }
                })
        })
    // }else{
    //
    // }
    console.log(arr)
    // arr.forEach((v:any, i:number) => {
    //     v.children=[]
    //     fiexArr.forEach((m:any, n:number) => {
    //
    //       if(v.menu_id==m.parent_id){
    //           console.log('执行了吗')
    //           v.children.push(m)
    //           let index=arr.indexOf(m)
    //           arr.splice(index,1)
    //
    //       }
    //
    //     })
    //     // if(v.children.length){
    //     //     console.log('lll执行了吗')
    //     //     buildTreeRoute(v.children,fiexArr)
    //     // }
    // })

    for(var i=0;i<arr.length;i++){

        arr[i].children=[]
        for(var j=0;j<fiexArr.length;j++){
            console.log(i)

            if(arr[i].menu_id&&(arr[i].menu_id==fiexArr[j].parent_id)){
                console.log('执行了吗')
                console.log(arr[i])
                arr[i].children.push(fiexArr[j])
                let index=arr.indexOf(fiexArr[j])
                arr.splice(index,1)
                // j--
            }
            if(arr[i].parent_id==fiexArr[j].menu_id){
                console.log('执行了吗')
                // arr[i].children.push(fiexArr[j])
                // let index=arr.indexOf(fiexArr[j])
                arr.splice(i,1)
                // i--

                if(i>0){
                    i--

                }

            }

        }
        console.log(arr[i])

        if(arr[i].children&&arr[i].children.length){
            buildTreeRoutes(arr[i].children,fiexArr)
        }
    }
    // console.log(arr)
    return arr
}
export const buildTreeRoute = (data:any[]) => {
    const obj:any = {} // 重新存储数据
    const res = [] // 存储最后结果
    const len = data.length
    const id = 'menu_id'
    const parentId = 'parent_id'
    const children = 'children'
    // 遍历原始数据data，构造obj数据，键名为id，值为数据
    for (let i = 0; i < len; i++) {
        obj[data[i][id]] = data[i]
    }
    console.log(obj)

    // 遍历原始数据
    for (let j = 0; j < len; j++) {
        const list = data[j]
        // 通过每条数据的 pid 去obj中查询
        const parentList = obj[list[parentId]]
        if (parentList) {
            // 根据 pid 找到的是父节点，list是子节点，
            if (!parentList[children]) {
                parentList[children] = []
            }
            // 将子节点插入 父节点的 children 字段中
            parentList[children].push(list)
        } else {
            // pid 找不到对应值，说明是根结点，直接插到根数组中
            res.push(list)
        }
    }
    return res
}
